home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / var / lib / dpkg / info / ca-certificates.postinst < prev    next >
Encoding:
Text File  |  2008-11-05  |  4.4 KB  |  150 lines

  1. #! /bin/sh -e
  2. # postinst script for ca-certificates
  3. #
  4. # see: dh_installdeb(1)
  5.  
  6. # summary of how this script can be called:
  7. #        * <postinst> `configure' <most-recently-configured-version>
  8. #        * <old-postinst> `abort-upgrade' <new version>
  9. #        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
  10. #          <new-version>
  11. #        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
  12. #          <failed-install-package> <version> `removing'
  13. #          <conflicting-package> <version>
  14. # for details, see /usr/share/doc/packaging-manual/
  15. #
  16. # quoting from the policy:
  17. #     Any necessary prompting should almost always be confined to the
  18. #     post-installation script, and should be protected with a conditional
  19. #     so that unnecessary prompting doesn't happen if a package's
  20. #     installation fails and the `postinst' is called with `abort-upgrade',
  21. #     `abort-remove' or `abort-deconfigure'.
  22.  
  23. each_value() {
  24.  echo "$l" |tr ',' '\n' | sed -e 's/^[[:space:]]*//' 
  25. }
  26.  
  27. memberp() {
  28.  m="$1"
  29.  l="$2"
  30.  each_value "$1" | grep -q "^$m\$"
  31. }
  32.  
  33. delca() {
  34.  m="$1"
  35.  l="$2"
  36.  echo "$l" |sed -e 's|'"$m"', ||' -e 's|'"$m"'$||' -e 's/,[[:space:]]*,/, /' -e 's/^[[:space:]]*//' -e 's/,[[:space:]]*$//'
  37. }
  38.  
  39. case "$1" in
  40.     configure)
  41.         if dpkg --compare-versions "$2" lt 20030414; then
  42.         # remove old *.pem files that ca-certificates installed 
  43.         (cd /etc/ssl/certs; rm -f $(cat /usr/share/doc/ca-certificates/oldpemfiles))
  44.     fi
  45.         . /usr/share/debconf/confmodule
  46.     db_version 2.0
  47.     db_capb multiselect
  48.     db_metaget ca-certificates/enable_crts choices
  49.     CERTS_AVAILABLE="$RET"
  50.     db_get ca-certificates/enable_crts
  51.     CERTS_ENABLED="$RET"
  52.     # XXX unmark seen for next configuration
  53.     db_fset ca-certificates/new_crts seen false
  54.     # We should clean up this value now, as everyone will have
  55.     # upgraded to a fixed version.
  56.     db_fset ca-certificates/enable_crts asked_pt_br_question false
  57.     db_stop || true
  58.     if test -f /etc/ca-certificates.conf; then
  59.       # XXX: while in subshell?
  60.       while read line
  61.       do
  62.         if echo "$line" | grep -q '^#'; then
  63.          echo "$line"
  64.         else
  65.          case "$line" in
  66.          !*) ca=$(echo "$line" | sed -e 's/^!//');;
  67.          *)   ca="$line";;
  68.          esac
  69.          if memberp "$ca" "$CERTS_ENABLED"; then
  70.            echo "$ca"
  71.            # CERTS_ENABLED=$(delca "$ca" "$CERTS_ENABLED")
  72.          else
  73.            echo "!$ca"
  74.          fi
  75.          # CERTS_AVAILABLE=$(delca "$ca" "$CERTS_AVAILABLE")
  76.         fi
  77.       done < /etc/ca-certificates.conf > /etc/ca-certificates.conf.dpkg-new
  78.       if echo "$CERTS_ENABLED" | egrep -q "^([[:space:]]*,)*[[:space:]]*$"; then
  79.           :
  80.       else
  81.         each_value "$CERTS_ENABLED" | while read ca
  82.          do
  83.           if grep -q "^$ca" /etc/ca-certificates.conf.dpkg-new; then
  84.           :
  85.           else
  86.           echo "$ca" >> /etc/ca-certificates.conf.dpkg-new
  87.           fi
  88.             done
  89.       fi
  90.       each_value "$CERTS_AVAILABLE" | while read ca
  91.       do
  92.         if memberp "$ca" "$CERTS_ENABLED"; then
  93.         :
  94.         elif grep -q "^!$ca" /etc/ca-certificates.conf.dpkg-new; then
  95.             :
  96.         else
  97.         echo "!$ca" >> /etc/ca-certificates.conf.dpkg-new
  98.         fi
  99.       done
  100.       if cmp -s /etc/ca-certificates.conf /etc/ca-certificates.conf.dpkg-new; then
  101.         rm -f /etc/ca-certificates.conf.dpkg-new
  102.       else
  103.         mv -f /etc/ca-certificates.conf /etc/ca-certificates.conf.dpkg-old
  104.         mv /etc/ca-certificates.conf.dpkg-new /etc/ca-certificates.conf
  105.       fi
  106.     else
  107.       # new file
  108.       cat > /etc/ca-certificates.conf <<EOF
  109. # This file lists certificates that you wish to use or to ignore to be
  110. # installed in /etc/ssl/certs.
  111. # update-ca-certificates(8) will update /etc/ssl/certs by reading this file.
  112. #
  113. # This is autogenerated by dpkg-reconfigure ca-certificates.
  114. # Certificates should be installed under /usr/share/ca-certificates
  115. # and files with extension '.crt' is recognized as available certs.
  116. #
  117. # line begins with # is comment.
  118. # line begins with ! is certificate filename to be deselected.
  119. #
  120. EOF
  121.       (echo $CERTS_ENABLED | tr ',' '\n'; \
  122.        echo $CERTS_AVAILABLE | tr ',' '\n') | \
  123.         sed -e 's/^[[:space:]]*//' | \
  124.         sort | uniq -c | \
  125.         sed -e 's/^[[:space:]]*2[[:space:]]*//' \
  126.             -e 's/^[[:space:]]*1[[:space:]]*/!/' \
  127.         >> /etc/ca-certificates.conf
  128.     fi
  129.     update-ca-certificates
  130.     ;;
  131.  
  132.     abort-upgrade|abort-remove|abort-deconfigure)
  133.  
  134.     ;;
  135.  
  136.     *)
  137.         echo "postinst called with unknown argument \`$1'" >&2
  138.         exit 1
  139.     ;;
  140. esac
  141.  
  142. # dh_installdeb will replace this with shell code automatically
  143. # generated by other debhelper scripts.
  144.  
  145.  
  146.  
  147. exit 0
  148.  
  149.  
  150.